home *** CD-ROM | disk | FTP | other *** search
/ AMIGA-CD 2 / Amiga-CD - Volume 2.iso / ungepackte_daten / 1992 / 10 / 02 / tips.ampk / Zeichen der Zeit / Time.c < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-01  |  2.5 KB  |  73 lines

  1. /*  Time.c
  2.  *  28.5.1992   (c) by Thomas Göcke, inspiration by ThoF
  3.  *
  4.  *  Time eröffnet ein kleines Fenster in der Titelleiste des
  5.  *  Workbenchscreens und zeigt in diesem ständig die aktuelle Uhrzeit an.
  6.  *  Das Fenster befindet sich immer vor allen anderen auf dem Workbench-
  7.  *  screen geöffneten Windows.
  8.  *  Zeit wird ohne Zugriff von Hand auf den Datestamp "geholt"
  9.  *
  10.  *  Compile Instr.:
  11.  *  dcc Time.c -1.3 -o RAM:Time -E RAM:ErrorList -v
  12.  *
  13.  *  Aufruf: Run Time
  14.  */
  15.  
  16. #include <exec/types.h>
  17. #include <intuition/intuitionbase.h>
  18. #include <intuition/intuition.h>
  19. #include <time.h>
  20. #include <libraries/dos.h>
  21.  
  22. struct IntuiMessage *message;
  23. struct RastPort *rp;
  24. struct Window *win;
  25. struct NewWindow nwindow =
  26. {
  27.     522, 1, 64, 8, 1, 1,
  28.     CLOSEWINDOW, WINDOWCLOSE | WINDOWDRAG,
  29.     NULL, NULL, "", NULL, NULL, NULL, NULL, NULL, NULL,
  30.     WBENCHSCREEN
  31. };
  32.  
  33. void
  34. Ende ()
  35. {
  36.     if (win) CloseWindow (win);
  37.     exit (0);
  38. }
  39.  
  40. main()
  41. {
  42.     char buff[8];
  43.     ULONG MessageClass;
  44.     USHORT code;
  45.  
  46.     if (!(win = (struct Window *) OpenWindow (&nwindow))) Ende ();
  47.     rp = win->RPort;    /* Rastport des geöffneten Windows ermittelm        */
  48.     SetAPen (rp, 0);    /* Farbe d. Ziffern = Hintergrundfarbe d. Workbench */
  49.     SetBPen (rp, 1);    /* Hintergrundfarbe = Vordergrundfarbe d. Workbench */
  50.     while (1)           /* Endlosschleife   */
  51.     {
  52.         time_t t=time(NULL);        /* get current time; time_t ist ULONG   */
  53.         struct tm *tp = localtime (&t); /* time in tm Struktur übertragen   */
  54.                         /* Std., Min., Sec. in Buffer schreiben             */
  55.         sprintf (buff, "%02d:%02d:%02d", tp->tm_hour, tp->tm_min, tp->tm_sec);
  56.         Move (rp, 0, 6);        /* Zeichenstift im Window positionieren     */
  57.         Text (rp, buff, 8);     /* Text aus Buffer auf rp schreiben         */
  58.         Delay (50);     /* etwa 50/50 sec warten, um CPU nicht unnötig zu   */
  59.                         /* blockieren                                       */
  60.         WindowToFront (win);    /* Zeit auf WB-Screen immer sichtbar        */
  61.                         /* Abfrage, ob Closing-Gadget (unsichtbar, aber
  62.                         /* unter den ersten Ziffern der Uhr) betätigt wurde */
  63.         if (message = (struct IntuiMessage *) GetMsg(win->UserPort))
  64.         {
  65.             MessageClass = message->Class;  /* Message retten & quittieren  */
  66.             code = message->Code;
  67.             ReplyMsg (message);
  68.             if (MessageClass == CLOSEWINDOW) Ende ();
  69.         }
  70.     }
  71. }
  72.  
  73.